// 工具类
/**
 * 返回一个随机数
 * @param min 下限（最小值）
 * @param max 上限（最大值）
 * @returns {number} 随机整数
 */
function random(min, max) {
  return Math.floor(Math.random() * (max - min + 1) + min);
}

/**
 * 噪声
 * @param x 初始坐标
 * @param y 初始坐标
 * @param minOffset 最小偏移量
 * @param maxOffset 最大偏移量
 * @returns {{x: number, y: number}} 经过噪声处理的坐标
 */
function noise(x,y,minOffset, maxOffset) {
  let offset = {
    x: random(minOffset, maxOffset),
    y: random(minOffset, maxOffset)
  }
  return {
    x: x + offset.x,
    y: y + offset.y
  }
}

// 随机返回数组中的一个元素
function randomOne(arr) {
  return arr[random(0, arr.length - 1)];
}

// 计算两点之间的距离
function distance(x1, y1, x2, y2) {
  return Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));
}

/**
 * 传入一个概率，百分制，返回true或false
 * @param probability
 * @returns {boolean} true或false 随机结果
 */
function probability(probability) {
  return random(0, 100) < probability;
}
export {
  random,
  noise,
  randomOne,
  distance,
  probability
}
// console.log(noise(100,200,-50,50));